Software based agents are increasingly being used to provide a variety of sophisticated functions and services to users. Generally, the term “agent” refers to a software routine that executes on one or more computer system platforms, usually in the background, and performs an action when a specified event occurs. For example, in a business setting, agents could transmit a summary file on the first day of the month or monitor incoming data and alert the user when a certain transaction has arrived. Software agents can also be designed to roam a distributed network, such as the Internet, in order to gather or distribute information. Depending upon the context of their use and the complexity of the functions they perform, agents are also referred to as “intelligent agents” or “personal assistants.”
Although software based agents can provide a variety of sophisticated functions and services, there exists a number of problems in using them efficiently. One such problem involves the fact that the design and implementation of sophisticated agent based systems for particular problems is a difficult, work intensive task. For example, when initially developing new agent-based systems, there are often specific needs which if they can be addressed will facilitate the development effort (e.g., avoiding the need to completely restart system development with each new problem). One particular need is the fact that prior art agent development environments do not provide adequate agent prototyping. There currently exists no prior art agent development environment that provides for ease of prototyping multiple, heterogeneous agents. Such agents can be used to construct agent-based applications where each has its own specialization and capabilities. There currently exists no prior art agent development environment that efficiently supports behaviour reuse. For example, behaviour reuse is needed not only to facilitate prototyping but also to allow modular construction of new composite behaviours for the different agent instances. Additionally, there currently exists no prior art agent architecture that adequately supports goal directed task processing. Goal-directed task processing among multiple concurrent goals is essential for the particular agent systems of interest. As used herein, the term “goal” is used to mean a goal-directed task in which there is a goal is to be achieved and there are already known methods for satisfying the goal which may be hierarchical.
Therefore, clearly there is a need for a better approach for implementing a software agent control architecture.